From 16e895f9770039a4d9129d577698c8dcec90334e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 23 Aug 2016 22:54:14 +0200 Subject: wined3d: Create dummy 1d textures. --- dlls/wined3d/context.c | 12 ++++++++++++ dlls/wined3d/device.c | 26 ++++++++++++++++++++++++++ dlls/wined3d/wined3d_private.h | 2 ++ 3 files changed, 40 insertions(+) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 9b6c19ef65..b09b08c690 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1736,6 +1736,7 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru { GL_EXTCALL(glActiveTexture(GL_TEXTURE0 + i)); + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D, textures->tex_1d); gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d); if (gl_info->supported[ARB_TEXTURE_RECTANGLE]) @@ -1751,8 +1752,10 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures->tex_cube_array); if (gl_info->supported[EXT_TEXTURE_ARRAY]) + { + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D_ARRAY, textures->tex_1d_array); gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D_ARRAY, textures->tex_2d_array); - + } if (gl_info->supported[ARB_TEXTURE_BUFFER_OBJECT]) gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_BUFFER, textures->tex_buffer); @@ -2735,6 +2738,14 @@ void context_bind_texture(struct wined3d_context *context, GLenum target, GLuint case GL_NONE: /* nothing to do */ break; + case GL_TEXTURE_1D: + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D, textures->tex_1d); + checkGLcall("glBindTexture"); + break; + case GL_TEXTURE_1D_ARRAY: + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D_ARRAY, textures->tex_1d_array); + checkGLcall("glBindTexture"); + break; case GL_TEXTURE_2D: gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d); break; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 6e275e1cff..16626040f4 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -617,6 +617,12 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_ * to each texture stage when the currently set D3D texture is NULL. */ context_active_texture(context, gl_info, 0); + gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_1d); + TRACE("Dummy 1D texture given name %u.\n", textures->tex_1d); + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D, textures->tex_1d); + gl_info->gl_ops.gl.p_glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA8, 1, 0, + GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, &color); + gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_2d); TRACE("Dummy 2D texture given name %u.\n", textures->tex_2d); gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d); @@ -668,6 +674,13 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_ if (gl_info->supported[EXT_TEXTURE_ARRAY]) { + + gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_1d_array); + TRACE("Dummy 1D array texture given name %u.\n", textures->tex_1d_array); + gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_1D_ARRAY, textures->tex_1d_array); + gl_info->gl_ops.gl.p_glTexImage2D(GL_TEXTURE_1D_ARRAY, 0, GL_RGBA8, 1, 1, 0, + GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, &color); + gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_2d_array); TRACE("Dummy 2D array texture given name %u.\n", textures->tex_2d_array); gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D_ARRAY, textures->tex_2d_array); @@ -735,7 +748,10 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_buffer); if (gl_info->supported[EXT_TEXTURE_ARRAY]) + { + gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_1d_array); gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_2d_array); + } if (gl_info->supported[ARB_TEXTURE_CUBE_MAP_ARRAY]) gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_cube_array); @@ -750,6 +766,7 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_rect); gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_2d); + gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_1d); checkGLcall("delete dummy textures"); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 7a606a7a42..ce563345f6 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2863,11 +2863,13 @@ struct wined3d_state struct wined3d_dummy_textures { GLuint tex_2d; + GLuint tex_1d; GLuint tex_rect; GLuint tex_3d; GLuint tex_cube; GLuint tex_cube_array; GLuint tex_2d_array; + GLuint tex_1d_array; GLuint tex_buffer; GLuint tex_2d_ms; GLuint tex_2d_ms_array; -- 2.11.0