@@ -422,7 +422,8 @@ void software_thread_destroy(void* udata) {
422422 // release buffers
423423 SDL_ReleaseGPUBuffer (ctx->device , ctx->vertex_buffer );
424424 SDL_ReleaseGPUBuffer (ctx->device , ctx->index_buffer );
425- SDL_ReleaseGPUSampler (ctx->device , ctx->sampler );
425+ SDL_ReleaseGPUSampler (ctx->device , ctx->sampler [0 ]);
426+ SDL_ReleaseGPUSampler (ctx->device , ctx->sampler [1 ]);
426427
427428 if (ctx->texture ) SDL_ReleaseGPUTexture (ctx->device , ctx->texture );
428429
@@ -1528,16 +1529,26 @@ void software_thread_init(void* udata, struct ps2_gs* gs, SDL_Window* window, SD
15281529
15291530 ctx->index_buffer = SDL_CreateGPUBuffer (device, &ibci);
15301531
1531- SDL_GPUSamplerCreateInfo sci = {
1532- .min_filter = ctx-> bilinear ? SDL_GPU_FILTER_LINEAR : SDL_GPU_FILTER_NEAREST,
1533- .mag_filter = ctx-> bilinear ? SDL_GPU_FILTER_LINEAR : SDL_GPU_FILTER_NEAREST,
1532+ SDL_GPUSamplerCreateInfo nearest_sci = {
1533+ .min_filter = SDL_GPU_FILTER_NEAREST,
1534+ .mag_filter = SDL_GPU_FILTER_NEAREST,
15341535 .mipmap_mode = SDL_GPU_SAMPLERMIPMAPMODE_NEAREST,
15351536 .address_mode_u = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
15361537 .address_mode_v = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
15371538 .address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
15381539 };
15391540
1540- ctx->sampler = SDL_CreateGPUSampler (ctx->device , &sci);
1541+ SDL_GPUSamplerCreateInfo linear_sci = {
1542+ .min_filter = SDL_GPU_FILTER_LINEAR,
1543+ .mag_filter = SDL_GPU_FILTER_LINEAR,
1544+ .mipmap_mode = SDL_GPU_SAMPLERMIPMAPMODE_NEAREST,
1545+ .address_mode_u = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
1546+ .address_mode_v = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
1547+ .address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE,
1548+ };
1549+
1550+ ctx->sampler [0 ] = SDL_CreateGPUSampler (ctx->device , &nearest_sci);
1551+ ctx->sampler [1 ] = SDL_CreateGPUSampler (ctx->device , &linear_sci);
15411552}
15421553
15431554static inline void software_thread_vram_blit (struct ps2_gs * gs, software_thread_state* ctx) {
@@ -2822,7 +2833,7 @@ void software_thread_render(void* udata, SDL_GPUCommandBuffer* command_buffer, S
28222833
28232834 SDL_GPUTextureSamplerBinding tsb = {
28242835 .texture = ctx->texture ,
2825- .sampler = ctx->sampler ,
2836+ .sampler = ctx->bilinear ? ctx-> sampler [ 1 ] : ctx-> sampler [ 0 ] ,
28262837 };
28272838
28282839 SDL_BindGPUFragmentSamplers (render_pass, 0 , &tsb, 1 );
0 commit comments