|
|
@ -1891,7 +1891,7 @@ static void vrend_fb_bind_texture_id(struct vrend_resource *res, |
|
|
|
glFramebufferTexture3DOES(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture3DOES(GL_FRAMEBUFFER, attachment, |
|
|
|
res->target, id, level, layer); |
|
|
|
res->target, id, level, layer); |
|
|
|
else |
|
|
|
else |
|
|
|
glFramebufferTexture3DEXT(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture3D(GL_FRAMEBUFFER, attachment, |
|
|
|
res->target, id, level, layer); |
|
|
|
res->target, id, level, layer); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case GL_TEXTURE_CUBE_MAP: |
|
|
|
case GL_TEXTURE_CUBE_MAP: |
|
|
@ -1899,16 +1899,16 @@ static void vrend_fb_bind_texture_id(struct vrend_resource *res, |
|
|
|
glFramebufferTexture(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture(GL_FRAMEBUFFER, attachment, |
|
|
|
id, level); |
|
|
|
id, level); |
|
|
|
else |
|
|
|
else |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, |
|
|
|
GL_TEXTURE_CUBE_MAP_POSITIVE_X + layer, id, level); |
|
|
|
GL_TEXTURE_CUBE_MAP_POSITIVE_X + layer, id, level); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case GL_TEXTURE_1D: |
|
|
|
case GL_TEXTURE_1D: |
|
|
|
glFramebufferTexture1DEXT(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture1D(GL_FRAMEBUFFER, attachment, |
|
|
|
res->target, id, level); |
|
|
|
res->target, id, level); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case GL_TEXTURE_2D: |
|
|
|
case GL_TEXTURE_2D: |
|
|
|
default: |
|
|
|
default: |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, |
|
|
|
res->target, id, level); |
|
|
|
res->target, id, level); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
@ -1916,12 +1916,12 @@ static void vrend_fb_bind_texture_id(struct vrend_resource *res, |
|
|
|
if (attachment == GL_DEPTH_ATTACHMENT) { |
|
|
|
if (attachment == GL_DEPTH_ATTACHMENT) { |
|
|
|
switch (res->target) { |
|
|
|
switch (res->target) { |
|
|
|
case GL_TEXTURE_1D: |
|
|
|
case GL_TEXTURE_1D: |
|
|
|
glFramebufferTexture1DEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture1D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_1D, 0, 0); |
|
|
|
GL_TEXTURE_1D, 0, 0); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case GL_TEXTURE_2D: |
|
|
|
case GL_TEXTURE_2D: |
|
|
|
default: |
|
|
|
default: |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
@ -1940,7 +1940,7 @@ static void vrend_hw_set_zsurf_texture(struct vrend_context *ctx) |
|
|
|
struct vrend_surface *surf = ctx->sub->zsurf; |
|
|
|
struct vrend_surface *surf = ctx->sub->zsurf; |
|
|
|
|
|
|
|
|
|
|
|
if (!surf) { |
|
|
|
if (!surf) { |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
uint32_t first_layer = surf->val1 & 0xffff; |
|
|
|
uint32_t first_layer = surf->val1 & 0xffff; |
|
|
@ -1961,7 +1961,7 @@ static void vrend_hw_set_color_surface(struct vrend_context *ctx, int index) |
|
|
|
if (!surf) { |
|
|
|
if (!surf) { |
|
|
|
GLenum attachment = GL_COLOR_ATTACHMENT0 + index; |
|
|
|
GLenum attachment = GL_COLOR_ATTACHMENT0 + index; |
|
|
|
|
|
|
|
|
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, attachment, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
uint32_t first_layer = ctx->sub->surf[index]->val1 & 0xffff; |
|
|
|
uint32_t first_layer = ctx->sub->surf[index]->val1 & 0xffff; |
|
|
@ -7123,12 +7123,12 @@ void vrend_renderer_resource_copy_region(struct vrend_context *ctx, |
|
|
|
|
|
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[0]); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[0]); |
|
|
|
/* clean out fb ids */ |
|
|
|
/* clean out fb ids */ |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
vrend_fb_bind_texture(src_res, 0, src_level, src_box->z); |
|
|
|
vrend_fb_bind_texture(src_res, 0, src_level, src_box->z); |
|
|
|
|
|
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
vrend_fb_bind_texture(dst_res, 0, dst_level, dstz); |
|
|
|
vrend_fb_bind_texture(dst_res, 0, dst_level, dstz); |
|
|
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
@ -7311,17 +7311,17 @@ static void vrend_renderer_blit_int(struct vrend_context *ctx, |
|
|
|
|
|
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[0]); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[0]); |
|
|
|
if (info->mask & PIPE_MASK_RGBA) |
|
|
|
if (info->mask & PIPE_MASK_RGBA) |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
else |
|
|
|
else |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->blit_fb_ids[1]); |
|
|
|
if (info->mask & PIPE_MASK_RGBA) |
|
|
|
if (info->mask & PIPE_MASK_RGBA) |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
else if (info->mask & (PIPE_MASK_Z | PIPE_MASK_S)) |
|
|
|
else if (info->mask & (PIPE_MASK_Z | PIPE_MASK_S)) |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
if (info->src.box.depth == info->dst.box.depth) |
|
|
|
if (info->src.box.depth == info->dst.box.depth) |
|
|
|
n_layers = info->dst.box.depth; |
|
|
|
n_layers = info->dst.box.depth; |
|
|
@ -7333,7 +7333,7 @@ static void vrend_renderer_blit_int(struct vrend_context *ctx, |
|
|
|
int level_width = u_minify(src_res->base.width0, info->src.level); |
|
|
|
int level_width = u_minify(src_res->base.width0, info->src.level); |
|
|
|
int level_height = u_minify(src_res->base.width0, info->src.level); |
|
|
|
int level_height = u_minify(src_res->base.width0, info->src.level); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, intermediate_fbo); |
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, intermediate_fbo); |
|
|
|
glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
GL_TEXTURE_2D, 0, 0); |
|
|
|
vrend_fb_bind_texture(intermediate_copy, 0, info->src.level, info->src.box.z + i); |
|
|
|
vrend_fb_bind_texture(intermediate_copy, 0, info->src.level, info->src.box.z + i); |
|
|
|
|
|
|
|
|
|
|
|