gallium: add texture barrier support to the interface and st/mesa (v2)
v2: change the gallium entry point to texture_barrier.
This commit is contained in:
@@ -408,6 +408,16 @@ The width0 is redefined to ``MAX2(width0, offset+size)``.
|
||||
|
||||
|
||||
|
||||
.. _texture_barrier
|
||||
|
||||
texture_barrier
|
||||
%%%%%%%%%%%%%%%
|
||||
|
||||
This function flushes all pending writes to the currently-set surfaces and
|
||||
invalidates all read caches of the currently-set samplers.
|
||||
|
||||
|
||||
|
||||
.. _pipe_transfer:
|
||||
|
||||
PIPE_TRANSFER
|
||||
|
@@ -390,6 +390,11 @@ struct pipe_context {
|
||||
struct pipe_resource *,
|
||||
unsigned offset,
|
||||
unsigned size);
|
||||
|
||||
/**
|
||||
* Flush any pending framebuffer writes and invalidate texture caches.
|
||||
*/
|
||||
void (*texture_barrier)(struct pipe_context *);
|
||||
};
|
||||
|
||||
|
||||
|
@@ -201,6 +201,7 @@ statetracker_sources = [
|
||||
'state_tracker/st_cb_syncobj.c',
|
||||
'state_tracker/st_cb_strings.c',
|
||||
'state_tracker/st_cb_texture.c',
|
||||
'state_tracker/st_cb_texturebarrier.c',
|
||||
'state_tracker/st_cb_viewport.c',
|
||||
'state_tracker/st_cb_xformfb.c',
|
||||
'state_tracker/st_context.c',
|
||||
|
@@ -221,6 +221,7 @@ STATETRACKER_SOURCES = \
|
||||
state_tracker/st_cb_syncobj.c \
|
||||
state_tracker/st_cb_strings.c \
|
||||
state_tracker/st_cb_texture.c \
|
||||
state_tracker/st_cb_texturebarrier.c \
|
||||
state_tracker/st_cb_viewport.c \
|
||||
state_tracker/st_cb_xformfb.c \
|
||||
state_tracker/st_context.c \
|
||||
|
60
src/mesa/state_tracker/st_cb_texturebarrier.c
Normal file
60
src/mesa/state_tracker/st_cb_texturebarrier.c
Normal file
@@ -0,0 +1,60 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2011 Marek Olšák <maraeo@gmail.com>
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* 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 THE AUTHORS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* glTextureBarrierNV function
|
||||
*
|
||||
* \author Marek Olšák
|
||||
*/
|
||||
|
||||
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
|
||||
#include "pipe/p_context.h"
|
||||
#include "pipe/p_defines.h"
|
||||
#include "st_context.h"
|
||||
#include "st_cb_texturebarrier.h"
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.TextureBarrier()
|
||||
*/
|
||||
static void
|
||||
st_TextureBarrier(struct gl_context *ctx)
|
||||
{
|
||||
struct pipe_context *pipe = st_context(ctx)->pipe;
|
||||
|
||||
pipe->texture_barrier(pipe);
|
||||
}
|
||||
|
||||
|
||||
void st_init_texture_barrier_functions(struct dd_function_table *functions)
|
||||
{
|
||||
functions->TextureBarrier = st_TextureBarrier;
|
||||
}
|
37
src/mesa/state_tracker/st_cb_texturebarrier.h
Normal file
37
src/mesa/state_tracker/st_cb_texturebarrier.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2011 Marek Olšák <maraeo@gmail.com>
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* 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 THE AUTHORS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef ST_CB_TEXTUREBARRIER_H
|
||||
#define ST_CB_TEXTUREBARRIER_H
|
||||
|
||||
|
||||
struct dd_function_table;
|
||||
|
||||
extern void st_init_texture_barrier_functions(struct dd_function_table *functions);
|
||||
|
||||
|
||||
#endif
|
@@ -53,6 +53,7 @@
|
||||
#include "st_cb_flush.h"
|
||||
#include "st_cb_syncobj.h"
|
||||
#include "st_cb_strings.h"
|
||||
#include "st_cb_texturebarrier.h"
|
||||
#include "st_cb_viewport.h"
|
||||
#include "st_atom.h"
|
||||
#include "st_draw.h"
|
||||
@@ -288,6 +289,7 @@ void st_init_driver_functions(struct dd_function_table *functions)
|
||||
st_init_cond_render_functions(functions);
|
||||
st_init_readpixels_functions(functions);
|
||||
st_init_texture_functions(functions);
|
||||
st_init_texture_barrier_functions(functions);
|
||||
st_init_flush_functions(functions);
|
||||
st_init_string_functions(functions);
|
||||
st_init_viewport_functions(functions);
|
||||
|
@@ -522,4 +522,8 @@ void st_init_extensions(struct st_context *st)
|
||||
if (screen->fence_finish) {
|
||||
ctx->Extensions.ARB_sync = GL_TRUE;
|
||||
}
|
||||
|
||||
if (st->pipe->texture_barrier) {
|
||||
ctx->Extensions.NV_texture_barrier = GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user