X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fradeon%2Fradeon_fbo.c;h=e04ae54ad809752205e6879d78e57cf0b6d7c795;hb=e5339fe4a47c242693962c9f90bbab8b74935cba;hp=1e6cd1be1fd28921bfd742bdb119f051cdada200;hpb=b04c718ebde69e763433269d9ab1a8b65f013605;p=mesa.git diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c b/src/mesa/drivers/dri/radeon/radeon_fbo.c index 1e6cd1be1fd..e04ae54ad80 100644 --- a/src/mesa/drivers/dri/radeon/radeon_fbo.c +++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c @@ -18,7 +18,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -26,7 +26,7 @@ **************************************************************************/ -#include "main/imports.h" +#include "util/imports.h" #include "main/macros.h" #include "main/mtypes.h" #include "main/enums.h" @@ -46,12 +46,6 @@ printf(__VA_ARGS__); \ } while(0) -static struct gl_framebuffer * -radeon_new_framebuffer(struct gl_context *ctx, GLuint name) -{ - return _mesa_new_framebuffer(ctx, name); -} - static void radeon_delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb) { @@ -61,7 +55,7 @@ radeon_delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb) "%s(rb %p, rrb %p) \n", __func__, rb, rrb); - ASSERT(rrb); + assert(rrb); if (rrb && rrb->bo) { radeon_bo_unref(rrb->bo); @@ -150,8 +144,7 @@ static GLuint get_depth_z16(const struct radeon_renderbuffer *rrb, #endif static void -radeon_map_renderbuffer_s8z24(struct gl_context *ctx, - struct gl_renderbuffer *rb, +radeon_map_renderbuffer_s8z24(struct gl_renderbuffer *rb, GLuint x, GLuint y, GLuint w, GLuint h, GLbitfield mode, GLubyte **out_map, @@ -169,6 +162,7 @@ radeon_map_renderbuffer_s8z24(struct gl_context *ctx, rrb->map_buffer = malloc(w * h * 4); ret = radeon_bo_map(rrb->bo, !!(mode & GL_MAP_WRITE_BIT)); assert(!ret); + (void) ret; untiled_s8z24_map = rrb->map_buffer; tiled_s8z24_map = rrb->bo->ptr; @@ -188,8 +182,7 @@ radeon_map_renderbuffer_s8z24(struct gl_context *ctx, } static void -radeon_map_renderbuffer_z16(struct gl_context *ctx, - struct gl_renderbuffer *rb, +radeon_map_renderbuffer_z16(struct gl_renderbuffer *rb, GLuint x, GLuint y, GLuint w, GLuint h, GLbitfield mode, GLubyte **out_map, @@ -207,6 +200,7 @@ radeon_map_renderbuffer_z16(struct gl_context *ctx, rrb->map_buffer = malloc(w * h * 2); ret = radeon_bo_map(rrb->bo, !!(mode & GL_MAP_WRITE_BIT)); assert(!ret); + (void) ret; untiled_z16_map = rrb->map_buffer; tiled_z16_map = rrb->bo->ptr; @@ -232,7 +226,8 @@ radeon_map_renderbuffer(struct gl_context *ctx, GLuint x, GLuint y, GLuint w, GLuint h, GLbitfield mode, GLubyte **out_map, - GLint *out_stride) + GLint *out_stride, + bool flip_y) { struct radeon_context *const rmesa = RADEON_CONTEXT(ctx); struct radeon_renderbuffer *rrb = radeon_renderbuffer(rb); @@ -242,6 +237,9 @@ radeon_map_renderbuffer(struct gl_context *ctx, int ret; int src_x, src_y; + /* driver does not support GL_FRAMEBUFFER_FLIP_Y_MESA */ + assert((rb->Name == 0) == flip_y); + if (!rrb || !rrb->bo) { *out_map = NULL; *out_stride = 0; @@ -310,13 +308,13 @@ radeon_map_renderbuffer(struct gl_context *ctx, } if ((rmesa->radeonScreen->chip_flags & RADEON_CHIPSET_DEPTH_ALWAYS_TILED) && !rrb->has_surface) { - if (rb->Format == MESA_FORMAT_S8_Z24 || rb->Format == MESA_FORMAT_X8_Z24) { - radeon_map_renderbuffer_s8z24(ctx, rb, x, y, w, h, + if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT || rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) { + radeon_map_renderbuffer_s8z24(rb, x, y, w, h, mode, out_map, out_stride); return; } - if (rb->Format == MESA_FORMAT_Z16) { - radeon_map_renderbuffer_z16(ctx, rb, x, y, w, h, + if (rb->Format == MESA_FORMAT_Z_UNORM16) { + radeon_map_renderbuffer_z16(rb, x, y, w, h, mode, out_map, out_stride); return; } @@ -324,6 +322,7 @@ radeon_map_renderbuffer(struct gl_context *ctx, ret = radeon_bo_map(rrb->bo, !!(mode & GL_MAP_WRITE_BIT)); assert(!ret); + (void) ret; map = rrb->bo->ptr; stride = rrb->map_pitch; @@ -416,14 +415,13 @@ radeon_unmap_renderbuffer(struct gl_context *ctx, { struct radeon_context *const rmesa = RADEON_CONTEXT(ctx); struct radeon_renderbuffer *rrb = radeon_renderbuffer(rb); - GLboolean ok; if ((rmesa->radeonScreen->chip_flags & RADEON_CHIPSET_DEPTH_ALWAYS_TILED) && !rrb->has_surface) { - if (rb->Format == MESA_FORMAT_S8_Z24 || rb->Format == MESA_FORMAT_X8_Z24) { + if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT || rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) { radeon_unmap_renderbuffer_s8z24(ctx, rb); return; } - if (rb->Format == MESA_FORMAT_Z16) { + if (rb->Format == MESA_FORMAT_Z_UNORM16) { radeon_unmap_renderbuffer_z16(ctx, rb); return; } @@ -438,6 +436,7 @@ radeon_unmap_renderbuffer(struct gl_context *ctx, radeon_bo_unmap(rrb->map_bo); if (rrb->map_mode & GL_MAP_WRITE_BIT) { + GLboolean ok; ok = rmesa->vtbl.blit(ctx, rrb->map_bo, 0, rb->Format, rrb->map_pitch / rrb->cpp, rrb->map_w, rrb->map_h, @@ -449,6 +448,7 @@ radeon_unmap_renderbuffer(struct gl_context *ctx, rrb->map_w, rrb->map_h, GL_FALSE); assert(ok); + (void) ok; } radeon_bo_unref(rrb->map_bo); @@ -474,7 +474,7 @@ radeon_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffe "%s(%p, rb %p) \n", __func__, ctx, rb); - ASSERT(rb->Name != 0); + assert(rb->Name != 0); switch (internalFormat) { case GL_R3_G3_B2: case GL_RGB4: @@ -507,22 +507,22 @@ radeon_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffe case GL_STENCIL_INDEX8_EXT: case GL_STENCIL_INDEX16_EXT: /* alloc a depth+stencil buffer */ - rb->Format = MESA_FORMAT_S8_Z24; + rb->Format = MESA_FORMAT_Z24_UNORM_S8_UINT; cpp = 4; break; case GL_DEPTH_COMPONENT16: - rb->Format = MESA_FORMAT_Z16; + rb->Format = MESA_FORMAT_Z_UNORM16; cpp = 2; break; case GL_DEPTH_COMPONENT: case GL_DEPTH_COMPONENT24: case GL_DEPTH_COMPONENT32: - rb->Format = MESA_FORMAT_X8_Z24; + rb->Format = MESA_FORMAT_Z24_UNORM_X8_UINT; cpp = 4; break; case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: - rb->Format = MESA_FORMAT_S8_Z24; + rb->Format = MESA_FORMAT_Z24_UNORM_S8_UINT; cpp = 4; break; default: @@ -609,7 +609,7 @@ static GLboolean radeon_alloc_window_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, GLenum internalFormat, GLuint width, GLuint height) { - ASSERT(rb->Name == 0); + assert(rb->Name == 0); rb->Width = width; rb->Height = height; rb->InternalFormat = internalFormat; @@ -623,8 +623,11 @@ radeon_alloc_window_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, /** Dummy function for gl_renderbuffer::AllocStorage() */ static GLboolean -radeon_nop_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, - GLenum internalFormat, GLuint width, GLuint height) +radeon_nop_alloc_storage(struct gl_context * ctx, + UNUSED struct gl_renderbuffer *rb, + UNUSED GLenum internalFormat, + UNUSED GLuint width, + UNUSED GLuint height) { _mesa_problem(ctx, "radeon_op_alloc_storage should never be called."); return GL_FALSE; @@ -636,7 +639,7 @@ radeon_nop_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *rb, * Not used for user-created renderbuffers. */ struct radeon_renderbuffer * -radeon_create_renderbuffer(gl_format format, __DRIdrawable *driDrawPriv) +radeon_create_renderbuffer(mesa_format format, __DRIdrawable *driDrawPriv) { struct radeon_renderbuffer *rrb; struct gl_renderbuffer *rb; @@ -700,7 +703,7 @@ radeon_bind_framebuffer(struct gl_context * ctx, GLenum target, radeon_print(RADEON_TEXTURE, RADEON_TRACE, "%s(%p, fb %p, target %s) \n", __func__, ctx, fb, - _mesa_lookup_enum_by_nr(target)); + _mesa_enum_to_string(target)); if (target == GL_FRAMEBUFFER_EXT || target == GL_DRAW_FRAMEBUFFER_EXT) { radeon_draw_buffer(ctx, fb); @@ -723,7 +726,7 @@ radeon_framebuffer_renderbuffer(struct gl_context * ctx, "%s(%p, fb %p, rb %p) \n", __func__, ctx, fb, rb); - _mesa_framebuffer_renderbuffer(ctx, fb, attachment, rb); + _mesa_FramebufferRenderbuffer_sw(ctx, fb, attachment, rb); radeon_draw_buffer(ctx, fb); } @@ -741,7 +744,7 @@ radeon_update_wrapper(struct gl_context *ctx, struct radeon_renderbuffer *rrb, rrb->pitch = texImage->Width * rrb->cpp; rb->Format = texImage->TexFormat; rb->InternalFormat = texImage->InternalFormat; - rb->_BaseFormat = _mesa_base_fbo_format(ctx, rb->InternalFormat); + rb->_BaseFormat = _mesa_get_format_base_format(rb->Format); rb->Width = texImage->Width; rb->Height = texImage->Height; rb->Delete = radeon_delete_renderbuffer; @@ -767,7 +770,7 @@ radeon_render_texture(struct gl_context * ctx, (void) fb; - ASSERT(newImage); + assert(newImage); radeon_image = (radeon_texture_image *)newImage; @@ -783,8 +786,7 @@ radeon_render_texture(struct gl_context * ctx, return; } - DBG("Begin render texture tid %lx tex=%u w=%d h=%d refcount=%d\n", - _glthread_GetID(), + DBG("Begin render texture tex=%u w=%d h=%d refcount=%d\n", att->Texture->Name, newImage->Width, newImage->Height, rb->RefCount); @@ -833,7 +835,7 @@ static void radeon_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) { radeonContextPtr radeon = RADEON_CONTEXT(ctx); - gl_format mesa_format; + mesa_format mesa_format; int i; for (i = -2; i < (GLint) ctx->Const.MaxColorAttachments; i++) { @@ -857,7 +859,7 @@ radeon_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED; radeon_print(RADEON_TEXTURE, RADEON_TRACE, "%s: HW doesn't support format %s as output format of attachment %d\n", - __FUNCTION__, _mesa_get_format_name(mesa_format), i); + __func__, _mesa_get_format_name(mesa_format), i); return; } } @@ -865,7 +867,6 @@ radeon_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) void radeon_fbo_init(struct radeon_context *radeon) { - radeon->glCtx.Driver.NewFramebuffer = radeon_new_framebuffer; radeon->glCtx.Driver.NewRenderbuffer = radeon_new_renderbuffer; radeon->glCtx.Driver.MapRenderbuffer = radeon_map_renderbuffer; radeon->glCtx.Driver.UnmapRenderbuffer = radeon_unmap_renderbuffer; @@ -874,7 +875,7 @@ void radeon_fbo_init(struct radeon_context *radeon) radeon->glCtx.Driver.RenderTexture = radeon_render_texture; radeon->glCtx.Driver.FinishRenderTexture = radeon_finish_render_texture; radeon->glCtx.Driver.ValidateFramebuffer = radeon_validate_framebuffer; - radeon->glCtx.Driver.BlitFramebuffer = _mesa_meta_BlitFramebuffer; + radeon->glCtx.Driver.BlitFramebuffer = _mesa_meta_and_swrast_BlitFramebuffer; radeon->glCtx.Driver.EGLImageTargetRenderbufferStorage = radeon_image_target_renderbuffer_storage; }