21 #include "wine/port.h" 27 #define WINED3D_VIEW_CUBE_ARRAY (WINED3D_VIEW_TEXTURE_CUBE | WINED3D_VIEW_TEXTURE_ARRAY) 41 unsigned int view_flags;
72 if (view_types[
i].texture_target !=
texture->target || view_types[
i].view_flags !=
desc->flags)
74 if (gl_info->
supported[view_types[
i].extension])
75 return view_types[
i].view_target;
80 FIXME(
"Unhandled view flags %#x for texture target %#x.\n",
desc->flags,
texture->target);
113 if (
buffer->desc.structure_byte_stride)
122 element_size =
buffer->desc.structure_byte_stride;
126 element_size =
format->byte_count;
140 unsigned int depth_or_layer_count;
145 WARN(
"Trying to create incompatible view for non typeless format %s.\n",
153 depth_or_layer_count =
texture->layer_count;
155 if (!
desc->u.texture.level_count
156 || (mip_slice &&
desc->u.texture.level_count != 1)
157 ||
desc->u.texture.level_idx >=
texture->level_count
158 ||
desc->u.texture.level_count >
texture->level_count -
desc->u.texture.level_idx
159 || !
desc->u.texture.layer_count
160 ||
desc->u.texture.layer_idx >= depth_or_layer_count
161 ||
desc->u.texture.layer_count > depth_or_layer_count -
desc->u.texture.layer_idx)
173 unsigned int layer_idx, layer_count;
177 view->target = view_target;
185 FIXME(
"OpenGL implementation does not support texture views.\n");
192 layer_idx =
desc->u.texture.layer_idx;
193 layer_count =
desc->u.texture.layer_count;
194 if (view_target ==
GL_TEXTURE_3D && (layer_idx || layer_count != 1))
196 FIXME(
"Depth slice (%u-%u) not supported.\n", layer_idx, layer_count);
201 gl_info->gl_ops.gl.p_glGenTextures(1, &
view->name);
203 desc->u.texture.level_idx,
desc->u.texture.level_count,
204 layer_idx, layer_count));
214 FIXME(
"OpenGL implementation does not support stencil texturing.\n");
238 FIXME(
"OpenGL implementation does not support buffer textures.\n");
242 if ((
offset & (gl_info->
limits.texture_buffer_offset_alignment - 1)))
244 FIXME(
"Buffer offset %u is not %u byte aligned.\n",
245 offset, gl_info->
limits.texture_buffer_offset_alignment);
252 gl_info->
gl_ops.gl.p_glGenTextures(1, &
view->name);
263 FIXME(
"OpenGL implementation does not support ARB_texture_buffer_range.\n");
279 *
size =
desc->u.buffer.count *
buffer->desc.structure_byte_stride;
301 unsigned int i, sub_resource_idx, layer_count;
312 sub_resource_idx =
desc->u.texture.layer_idx *
texture->level_count +
desc->u.texture.level_idx;
322 TRACE(
"%p increasing refcount to %u.\n",
view, refcount);
332 if (
view->gl_view.name)
340 gl_info->gl_ops.gl.p_glDeleteTextures(1, &
view->gl_view.name);
352 TRACE(
"%p decreasing refcount to %u.\n",
view, refcount);
361 view->parent_ops->wined3d_object_destroyed(
view->parent);
387 return texture->sub_resources[
view->sub_resource_idx].parent;
401 return view->resource;
432 *
width = swapchain->
desc.backbuffer_width;
437 unsigned int level_idx =
view->sub_resource_idx %
texture->level_count;
450 unsigned int i, sub_resource_idx, layer_count;
460 sub_resource_idx =
view->sub_resource_idx;
470 unsigned int i, sub_resource_idx, layer_count;
480 sub_resource_idx =
view->sub_resource_idx;
489 unsigned int i, sub_resource_idx, layer_count;
499 sub_resource_idx =
view->sub_resource_idx;
523 unsigned int depth_or_layer_count;
528 depth_or_layer_count =
texture->layer_count;
531 || (
view->layer_count != 1 &&
view->layer_count != depth_or_layer_count))
533 if (
resource->format->gl_view_class !=
view->format->gl_view_class)
535 FIXME(
"Render target view not supported, resource format %s, view format %s.\n",
539 if (
texture->swapchain &&
texture->swapchain->desc.backbuffer_count > 1)
541 FIXME(
"Swapchain views not supported.\n");
558 view->parent_ops = parent_ops;
565 allow_srgb_toggle =
TRUE;
574 view->sub_resource_idx = 0;
575 view->layer_count = 1;
583 view->sub_resource_idx =
desc->u.texture.level_idx;
585 view->sub_resource_idx +=
desc->u.texture.layer_idx *
texture->level_count;
586 view->layer_count =
desc->u.texture.layer_count;
605 TRACE(
"desc %p, resource %p, parent %p, parent_ops %p, view %p.\n",
608 if (!(
object = heap_alloc_zero(
sizeof(*
object))))
614 WARN(
"Failed to initialise view, hr %#x.\n",
hr);
618 TRACE(
"Created render target view %p.\n",
object);
630 TRACE(
"texture %p, sub_resource_idx %u, parent %p, parent_ops %p, view %p.\n",
635 desc.u.texture.level_idx = sub_resource_idx %
texture->level_count;
636 desc.u.texture.level_count = 1;
637 desc.u.texture.layer_idx = sub_resource_idx /
texture->level_count;
638 desc.u.texture.layer_count = 1;
647 TRACE(
"%p increasing refcount to %u.\n",
view, refcount);
656 if (
view->gl_view.name)
663 gl_info->gl_ops.gl.p_glDeleteTextures(1, &
view->gl_view.name);
675 TRACE(
"%p decreasing refcount to %u.\n",
view, refcount);
684 view->parent_ops->wined3d_object_destroyed(
view->parent);
708 view_format =
view->format;
709 gl_info = &
resource->device->adapter->gl_info;
728 && !
desc->u.texture.level_idx &&
desc->u.texture.level_count ==
texture->level_count
729 && !
desc->u.texture.layer_idx &&
desc->u.texture.layer_count ==
texture->layer_count
732 TRACE(
"Creating identity shader resource view.\n");
734 else if (
texture->swapchain &&
texture->swapchain->desc.backbuffer_count > 1)
736 FIXME(
"Swapchain shader resource views not supported.\n");
749 FIXME(
"Shader resource view not supported, resource format %s, view format %s.\n",
753 #if defined(STAGING_CSMT) 765 view->parent_ops = parent_ops;
773 #if defined(STAGING_CSMT) 788 TRACE(
"desc %p, resource %p, parent %p, parent_ops %p, view %p.\n",
791 if (!(
object = heap_alloc_zero(
sizeof(*
object))))
797 WARN(
"Failed to initialise view, hr %#x.\n",
hr);
801 TRACE(
"Created shader resource view %p.\n",
object);
815 if (
view->gl_view.name)
824 FIXME(
"Buffer shader resources not supported.\n");
865 layer_count =
view->desc.u.texture.layer_count;
866 level_count =
view->desc.u.texture.level_count;
872 for (
i = 0;
i < layer_count; ++
i)
875 if (
view->gl_view.name)
899 for (
i = 0;
i < layer_count; ++
i)
908 if (!
view->gl_view.name)
925 WARN(
"Called on buffer resource %p.\n",
view->resource);
932 WARN(
"Texture without the WINED3D_TEXTURE_GENERATE_MIPMAPS flag, ignoring.\n");
943 TRACE(
"%p increasing refcount to %u.\n",
view, refcount);
952 if (
view->gl_view.name ||
view->counter_bo)
959 if (
view->gl_view.name)
960 gl_info->gl_ops.gl.p_glDeleteTextures(1, &
view->gl_view.name);
961 if (
view->counter_bo)
974 TRACE(
"%p decreasing refcount to %u.\n",
view, refcount);
983 view->parent_ops->wined3d_object_destroyed(
view->parent);
1022 FIXME(
"OpenGL implementation does not support ARB_clear_buffer_object.\n");
1052 if (!
view->counter_bo)
1069 if (!
view->counter_bo)
1075 src.buffer_object =
view->counter_bo;
1091 gl_info = &
resource->device->adapter->gl_info;
1103 static const GLuint initial_value = 0;
1115 unsigned int depth_or_layer_count;
1120 depth_or_layer_count =
texture->layer_count;
1122 if (
desc->u.texture.layer_idx ||
desc->u.texture.layer_count != depth_or_layer_count)
1128 #if defined(STAGING_CSMT) 1140 view->parent_ops = parent_ops;
1148 #if defined(STAGING_CSMT) 1163 TRACE(
"desc %p, resource %p, parent %p, parent_ops %p, view %p.\n",
1166 if (!(
object = heap_alloc_zero(
sizeof(*
object))))
1172 WARN(
"Failed to initialise view, hr %#x.\n",
hr);
1176 TRACE(
"Created unordered access view %p.\n",
object);
static void wined3d_shader_resource_view_destroy_object(void *object)
HRESULT CDECL wined3d_rendertarget_view_create(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
struct wined3d_resource *CDECL wined3d_rendertarget_view_get_resource(const struct wined3d_rendertarget_view *view)
GLint GLint GLsizei width
void shader_resource_view_generate_mipmaps(struct wined3d_shader_resource_view *view)
static unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture, unsigned int level)
struct opengl_funcs gl_ops
struct wined3d_texture *__cdecl wined3d_texture_from_resource(struct wined3d_resource *resource)
static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
coclass MSXML2::XSLTemplate40 object
void wined3d_shader_resource_view_bind(struct wined3d_shader_resource_view *view, unsigned int unit, struct wined3d_sampler *sampler, struct wined3d_context *context)
BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer, struct wined3d_context *context, DWORD location)
#define GL_TEXTURE_SRGB_DECODE_EXT
static void create_buffer_texture(struct wined3d_gl_view *view, struct wined3d_context *context, struct wined3d_buffer *buffer, const struct wined3d_format *view_format, unsigned int offset, unsigned int size)
void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info, unsigned int unit)
#define GL_TEXTURE_BUFFER
static unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture, unsigned int level)
static BOOL is_stencil_view_format(const struct wined3d_format *format)
BOOL wined3d_format_is_depth_view(enum wined3d_format_id resource_format_id, enum wined3d_format_id view_format_id)
static GLuint wined3d_texture_get_texture_name(const struct wined3d_texture *texture, const struct wined3d_context *context, BOOL srgb)
void wined3d_texture_prepare_texture(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb)
void wined3d_sampler_bind(struct wined3d_sampler *sampler, unsigned int unit, struct wined3d_texture *texture, const struct wined3d_context *context)
#define GL_TEXTURE_SWIZZLE_RGBA
static unsigned int wined3d_texture_get_level_depth(const struct wined3d_texture *texture, unsigned int level)
const struct wined3d_format * wined3d_get_format(const struct wined3d_gl_info *gl_info, enum wined3d_format_id format_id, unsigned int resource_usage)
static void wined3d_resource_acquire(struct wined3d_resource *resource)
#define WINED3D_LOCATION_BUFFER
#define GL_DEPTH_STENCIL_TEXTURE_MODE
static ULONG wined3d_resource_decref(struct wined3d_resource *resource)
void wined3d_cs_init_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
void context_invalidate_state(struct wined3d_context *context, DWORD state)
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
void context_bind_texture(struct wined3d_context *context, GLenum target, GLuint name)
HRESULT CDECL wined3d_shader_resource_view_create(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader_resource_view **view)
void wined3d_rendertarget_view_invalidate_location(struct wined3d_rendertarget_view *view, DWORD location)
static void wined3d_shader_resource_view_cs_init(void *object)
static void wined3d_view_invalidate_location(struct wined3d_resource *resource, const struct wined3d_view_desc *desc, DWORD location)
DWORD wined3d_buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_bo_address *data, DWORD locations)
void wined3d_unordered_access_view_copy_counter(struct wined3d_unordered_access_view *view, struct wined3d_buffer *buffer, unsigned int offset, struct wined3d_context *context)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
static void create_texture_view(struct wined3d_gl_view *view, GLenum view_target, const struct wined3d_view_desc *desc, struct wined3d_texture *texture, const struct wined3d_format *view_format)
void CDECL wined3d_shader_resource_view_generate_mipmaps(struct wined3d_shader_resource_view *view)
#define GL_TEXTURE_CUBE_MAP_ARRAY
#define GL_TEXTURE_2D_MULTISAMPLE
ULONG CDECL wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *view)
void wined3d_cs_emit_generate_mipmaps(struct wined3d_cs *cs, struct wined3d_shader_resource_view *view)
#define WINED3D_TEXTURE_IS_SRGB
#define WINED3D_TEXTURE_GENERATE_MIPMAPS
void *CDECL wined3d_buffer_get_parent(const struct wined3d_buffer *buffer)
static GLenum get_texture_view_target(const struct wined3d_gl_info *gl_info, const struct wined3d_view_desc *desc, const struct wined3d_texture *texture)
static const struct wined3d_format * validate_resource_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, BOOL mip_slice, BOOL allow_srgb_toggle)
static const WCHAR desc[]
BOOL supported[WINED3D_GL_EXT_COUNT]
static void buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
struct wined3d_swapchain_desc desc
png_const_structrp png_const_inforp int * unit
HRESULT CDECL wined3d_rendertarget_view_create_from_sub_resource(struct wined3d_texture *texture, unsigned int sub_resource_idx, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_view *view, unsigned int value)
static HRESULT wined3d_rendertarget_view_init(struct wined3d_rendertarget_view *view, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
void context_release(struct wined3d_context *context)
void CDECL wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, void *parent)
void *CDECL wined3d_rendertarget_view_get_sub_resource_parent(const struct wined3d_rendertarget_view *view)
void wined3d_texture_validate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location)
ULONG CDECL wined3d_shader_resource_view_incref(struct wined3d_shader_resource_view *view)
#define WINED3D_VIEW_TEXTURE_ARRAY
#define STATE_GRAPHICS_SHADER_RESOURCE_BINDING
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
void context_invalidate_compute_state(struct wined3d_context *context, DWORD state_id)
#define WINED3D_VIEW_TEXTURE_CUBE
void wined3d_unordered_access_view_clear_uint(struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value, struct wined3d_context *context)
void wined3d_rendertarget_view_get_drawable_size(const struct wined3d_rendertarget_view *view, const struct wined3d_context *context, unsigned int *width, unsigned int *height)
void wined3d_buffer_invalidate_location(struct wined3d_buffer *buffer, DWORD location)
WINE_DEFAULT_DEBUG_CHANNEL(d3d)
#define WINED3D_VIEW_BUFFER_APPEND
const struct wined3d_parent_ops * parent_ops
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
#define GL_TEXTURE_1D_ARRAY
static BOOL wined3d_format_is_typeless(const struct wined3d_format *format)
#define WINED3D_VIEW_CUBE_ARRAY
#define GL_TEXTURE_2D_ARRAY
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
static void wined3d_render_target_view_cs_init(void *object)
#define GL_TEXTURE_CUBE_MAP
#define InterlockedDecrement
struct wined3d_sampler_desc sampler_desc
static struct gl_texture * wined3d_texture_get_gl_texture(struct wined3d_texture *texture, BOOL srgb)
void *CDECL wined3d_rendertarget_view_get_parent(const struct wined3d_rendertarget_view *view)
int offscreen_rendering_mode
static unsigned int wined3d_texture_get_level_pow2_height(const struct wined3d_texture *texture, unsigned int level)
static struct wined3d_buffer * buffer_from_resource(struct wined3d_resource *resource)
#define STATE_COMPUTE_SHADER_RESOURCE_BINDING
#define WINED3D_UNMAPPED_STAGE
GLint GLint GLsizei GLsizei height
#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY
BOOL wined3d_texture_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location)
enum wined3d_gl_extension extension
#define location(file, line)
#define STATE_SAMPLER(num)
BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location)
struct wined3d_context * context_acquire(const struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
static void wined3d_resource_release(struct wined3d_resource *resource)
const struct wined3d_parent_ops * parent_ops
#define InterlockedIncrement
void wined3d_texture_invalidate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static void create_buffer_view(struct wined3d_gl_view *view, struct wined3d_context *context, const struct wined3d_view_desc *desc, struct wined3d_buffer *buffer, const struct wined3d_format *view_format)
void context_copy_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *dst, GLenum dst_binding, const struct wined3d_bo_address *src, GLenum src_binding, size_t size)
void *CDECL wined3d_shader_resource_view_get_parent(const struct wined3d_shader_resource_view *view)
#define WINED3D_VIEW_BUFFER_COUNTER
#define WINED3D_LOCATION_TEXTURE_RGB
const struct wined3d_parent_ops * parent_ops
ULONG CDECL wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *view)
unsigned int sub_resource_idx
#define GL_ATOMIC_COUNTER_BUFFER
static void wined3d_rendertarget_view_destroy_object(void *object)
static void shader_resource_view_bind_and_dirtify(struct wined3d_shader_resource_view *view, struct wined3d_context *context)
const char * debug_d3dresourcetype(enum wined3d_resource_type resource_type)
ULONG CDECL wined3d_unordered_access_view_decref(struct wined3d_unordered_access_view *view)
ULONG CDECL wined3d_unordered_access_view_incref(struct wined3d_unordered_access_view *view)
struct wined3d_fbo_ops fbo_ops
static void get_buffer_view_range(const struct wined3d_buffer *buffer, const struct wined3d_view_desc *desc, const struct wined3d_format *view_format, unsigned int *offset, unsigned int *size)
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb)
#define WINED3D_SRGB_READ_WRITE_CONTROL
void context_bind_bo(struct wined3d_context *context, GLenum binding, GLuint name)
const struct wined3d_gl_info * gl_info
ULONG CDECL wined3d_shader_resource_view_decref(struct wined3d_shader_resource_view *view)
void wined3d_rendertarget_view_load_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, DWORD location)
void wined3d_rendertarget_view_validate_location(struct wined3d_rendertarget_view *view, DWORD location)
static void wined3d_unordered_access_view_destroy_object(void *object)
#define GL_TEXTURE_RECTANGLE
void *CDECL wined3d_unordered_access_view_get_parent(const struct wined3d_unordered_access_view *view)
const char * debug_d3dformat(enum wined3d_format_id format_id)
void wined3d_unordered_access_view_invalidate_location(struct wined3d_unordered_access_view *view, DWORD location)
HRESULT CDECL wined3d_unordered_access_view_create(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_unordered_access_view **view)
#define WINED3D_LOCATION_TEXTURE_SRGB
static ULONG wined3d_resource_incref(struct wined3d_resource *resource)
struct wined3d_gl_limits limits
void context_gl_resource_released(struct wined3d_device *device, GLuint name, BOOL rb_namespace)
#define GL_TEXTURE_MAX_LEVEL
#define GL_TEXTURE_BASE_LEVEL
static unsigned int wined3d_texture_get_level_pow2_width(const struct wined3d_texture *texture, unsigned int level)
static void wined3d_unordered_access_view_cs_init(void *object)
BOOL wined3d_formats_are_srgb_variants(enum wined3d_format_id format1, enum wined3d_format_id format2)
static BOOL heap_free(void *mem)
#define WINED3D_VIEW_BUFFER_RAW
void wined3d_rendertarget_view_prepare_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, DWORD location)
void wined3d_texture_bind(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb)
#define GL_SKIP_DECODE_EXT